/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.ebc.icontatos.model;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;

/**
 *
 * @author linux
 */
@Entity
public class AgendaEnvio implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long idAgendaEnvio;

    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date dataHoraAgendada;

    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date dataHoraEnviada;

    @ManyToOne(cascade=CascadeType.MERGE)
    private Boletim boletim;

    @ManyToOne(cascade=CascadeType.MERGE)
    private GrupoEnvio grupoEnvio;

    @OneToOne(cascade=CascadeType.MERGE)
    private Funcionario funcionario;

	public AgendaEnvio() {
	}

	public Long getIdAgendaEnvio() {
		return idAgendaEnvio;
	}

	public void setIdAgendaEnvio(Long idAgendaEnvio) {
		this.idAgendaEnvio = idAgendaEnvio;
	}

	public Date getDataHoraAgendada() {
		return dataHoraAgendada;
	}

	public void setDataHoraAgendada(Date dataHoraAgendada) {
		this.dataHoraAgendada = dataHoraAgendada;
	}

	public Date getDataHoraEnviada() {
		return dataHoraEnviada;
	}

	public void setDataHoraEnviada(Date dataHoraEnviada) {
		this.dataHoraEnviada = dataHoraEnviada;
	}

	public Boletim getBoletim() {
		return boletim;
	}

	public void setBoletim(Boletim boletim) {
		this.boletim = boletim;
	}

	public GrupoEnvio getGrupoEnvio() {
		return grupoEnvio;
	}

	public void setGrupoEnvio(GrupoEnvio grupoEnvio) {
		this.grupoEnvio = grupoEnvio;
	}

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((boletim == null) ? 0 : boletim.hashCode());
		result = prime
				* result
				+ ((dataHoraAgendada == null) ? 0 : dataHoraAgendada.hashCode());
		result = prime * result
				+ ((dataHoraEnviada == null) ? 0 : dataHoraEnviada.hashCode());
		result = prime * result
				+ ((funcionario == null) ? 0 : funcionario.hashCode());
		result = prime * result
				+ ((grupoEnvio == null) ? 0 : grupoEnvio.hashCode());
		result = prime * result
				+ ((idAgendaEnvio == null) ? 0 : idAgendaEnvio.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		AgendaEnvio other = (AgendaEnvio) obj;
		if (boletim == null) {
			if (other.boletim != null)
				return false;
		} else if (!boletim.equals(other.boletim))
			return false;
		if (dataHoraAgendada == null) {
			if (other.dataHoraAgendada != null)
				return false;
		} else if (!dataHoraAgendada.equals(other.dataHoraAgendada))
			return false;
		if (dataHoraEnviada == null) {
			if (other.dataHoraEnviada != null)
				return false;
		} else if (!dataHoraEnviada.equals(other.dataHoraEnviada))
			return false;
		if (funcionario == null) {
			if (other.funcionario != null)
				return false;
		} else if (!funcionario.equals(other.funcionario))
			return false;
		if (grupoEnvio == null) {
			if (other.grupoEnvio != null)
				return false;
		} else if (!grupoEnvio.equals(other.grupoEnvio))
			return false;
		if (idAgendaEnvio == null) {
			if (other.idAgendaEnvio != null)
				return false;
		} else if (!idAgendaEnvio.equals(other.idAgendaEnvio))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "AgendaEnvio [idAgendaEnvio=" + idAgendaEnvio + "]";
	}
    
}
